package sv.gob.mh.dgii.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * 
 * @author luis.monterrosa
 * 
 */
@Entity
@Table(name = "ED_AMNISTIA", schema = "EDADEPUDOC")
public class EdAmnistia implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7154901097121019127L;
	private Long ncorrelativo;
	private String rcRuc;
	private String nfolio;
	private String mtipoamnistia;
	private String cmodelo;
	private TbObligacion tbObligacion;
	private String cusuarioIngreso;
	private String snotasIngreso;
	private String mproceso;
	private Date fhIngreso;
	private EdDeclaraciones edDeclaraciones;
	private Double vimpuesto;
	private Double vmulta;
	private Double vinteres;
	private String snotasRet;
	private Date fhretsuspenso;
	private String cusuarioRet;
	private String mdocRetiroSuspe;
	private String ndocRetiroSuspe;
	private Integer bpagadoDGT;
	private String nmandamiento;
	private Date fpDocumento;

	public EdAmnistia(String mtipoamnistia) {
		this.mtipoamnistia = mtipoamnistia;
	}
	
	public EdAmnistia() {		
	}
	
	@Id
	@Column(name = "N_CORRELATIVO", unique = true, nullable = false, insertable = true, updatable = true, precision = 18, scale = 0)
	public Long getNcorrelativo() {
		return ncorrelativo;
	}

	public void setNcorrelativo(Long ncorrelativo) {
		this.ncorrelativo = ncorrelativo;
	}

	/**
	 * @return the rcRuc
	 */
	@Column(name = "NIT")
	public String getRcRuc() {
		return rcRuc;
	}

	/**
	 * @param rcRuc
	 *            the rcRuc to set
	 */
	public void setRcRuc(String rcRuc) {
		this.rcRuc = rcRuc;
	}

	/**
	 * @return the nfolio
	 */
	@Column(length = 12, name = "N_FOLIO", nullable = true)
	public String getNfolio() {
		return nfolio;
	}

	/**
	 * @param nfolio
	 *            the nfolio to set
	 */
	public void setNfolio(String nfolio) {
		this.nfolio = nfolio;
	}

	@Column(length = 3, name = "M_TIPO_AMNISTIA", nullable = false)
	public String getMtipoamnistia() {
		return mtipoamnistia;
	}

	public void setMtipoamnistia(String mtipoamnistia) {
		this.mtipoamnistia = mtipoamnistia;
	}

	/**
	 * @return the cmodelo
	 */
	@Column(length = 3, name = "C_MODELO", nullable = false)
	public String getCmodelo() {
		return cmodelo;
	}

	/**
	 * @param cmodelo
	 *            the cmodelo to set
	 */
	public void setCmodelo(String cmodelo) {
		this.cmodelo = cmodelo;
	}

	/**
	 * @return the tbObligacion
	 */
	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "C_OBLIGACION", nullable = false)
	public TbObligacion getTbObligacion() {
		return tbObligacion;
	}

	/**
	 * @param tbObligacion
	 *            the tbObligacion to set
	 */
	public void setTbObligacion(TbObligacion tbObligacion) {
		this.tbObligacion = tbObligacion;
	}

	/**
	 * @return the cusuarioIngreso
	 */
	@Column(length = 30, name = "C_USUARIO_INGRESO", nullable = false)
	public String getCusuarioIngreso() {
		return cusuarioIngreso;
	}

	/**
	 * @param cusuarioIngreso
	 *            the cusuarioIngreso to set
	 */
	public void setCusuarioIngreso(String cusuarioIngreso) {
		this.cusuarioIngreso = cusuarioIngreso;
	}

	/**
	 * @return the snotasIngreso
	 */
	@Column(length = 200, name = "S_NOTAS_INGRESO", nullable = false)
	public String getSnotasIngreso() {
		return snotasIngreso;
	}

	/**
	 * @param snotasIngreso
	 *            the snotasIngreso to set
	 */
	public void setSnotasIngreso(String snotasIngreso) {
		this.snotasIngreso = snotasIngreso;
	}

	/**
	 * @return the mproceso
	 */
	@Column(length = 2, name = "M_PROCESO", nullable = false)
	public String getMproceso() {
		return mproceso;
	}

	/**
	 * @param mproceso
	 *            the mproceso to set
	 */
	public void setMproceso(String mproceso) {
		this.mproceso = mproceso;
	}

	/**
	 * @return the fhIngreso
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FH_INGRESO")
	public Date getFhIngreso() {
		return fhIngreso;
	}

	/**
	 * @param fhIngreso
	 *            the fhIngreso to set
	 */
	public void setFhIngreso(Date fhIngreso) {
		this.fhIngreso = fhIngreso;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "I_INDICE", nullable = false, insertable = false, updatable = false)
	public EdDeclaraciones getEdDeclaraciones() {
		return edDeclaraciones;
	}

	public void setEdDeclaraciones(EdDeclaraciones edDeclaraciones) {
		this.edDeclaraciones = edDeclaraciones;
	}

	/**
	 * @return the vimpuesto
	 */
	@Column(name = "V_IMPUESTO", nullable = false, precision = 13, scale = 2)
	public Double getVimpuesto() {
		return vimpuesto;
	}

	/**
	 * @param vimpuesto
	 *            the vimpuesto to set
	 */
	public void setVimpuesto(Double vimpuesto) {
		this.vimpuesto = vimpuesto;
	}

	/**
	 * @return the vmulta
	 */
	@Column(name = "V_MULTA", nullable = false, precision = 13, scale = 2)
	public Double getVmulta() {
		return vmulta;
	}

	/**
	 * @param vmulta
	 *            the vmulta to set
	 */
	public void setVmulta(Double vmulta) {
		this.vmulta = vmulta;
	}

	/**
	 * @return the vinteres
	 */
	@Column(name = "V_INTERES", nullable = false, precision = 13, scale = 2)
	public Double getVinteres() {
		return vinteres;
	}

	/**
	 * @param vinteres
	 *            the vinteres to set
	 */
	public void setVinteres(Double vinteres) {
		this.vinteres = vinteres;
	}

	/**
	 * @return the snotasRet
	 */
	@Column(length = 200, name = "S_NOTAS_RET", nullable = true)
	public String getSnotasRet() {
		return snotasRet;
	}

	/**
	 * @param snotasRet
	 *            the snotasRet to set
	 */
	public void setSnotasRet(String snotasRet) {
		this.snotasRet = snotasRet;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FH_RET_SUSPENSO")
	public Date getFhretsuspenso() {
		return fhretsuspenso;
	}

	public void setFhretsuspenso(Date fhretsuspenso) {
		this.fhretsuspenso = fhretsuspenso;
	}

	/**
	 * @return the cusuarioRet
	 */
	@Column(length = 30, name = "C_USUARIO_RET", nullable = true)
	public String getCusuarioRet() {
		return cusuarioRet;
	}

	/**
	 * @param cusuarioRet
	 *            the cusuarioRet to set
	 */
	public void setCusuarioRet(String cusuarioRet) {
		this.cusuarioRet = cusuarioRet;
	}

	/**
	 * @return the mdocRetiroSuspe
	 */
	@Column(length = 3, name = "M_DOC_RETIRO_SUSPE", nullable = true)
	public String getMdocRetiroSuspe() {
		return mdocRetiroSuspe;
	}

	/**
	 * @param mdocRetiroSuspe
	 *            the mdocRetiroSuspe to set
	 */
	public void setMdocRetiroSuspe(String mdocRetiroSuspe) {
		this.mdocRetiroSuspe = mdocRetiroSuspe;
	}

	/**
	 * @return the ndocRetiroSuspe
	 */
	@Column(length = 20, name = "N_DOC_RETIRO_SUSPE", nullable = true)
	public String getNdocRetiroSuspe() {
		return ndocRetiroSuspe;
	}

	/**
	 * @param ndocRetiroSuspe
	 *            the ndocRetiroSuspe to set
	 */
	public void setNdocRetiroSuspe(String ndocRetiroSuspe) {
		this.ndocRetiroSuspe = ndocRetiroSuspe;
	}

	/**
	 * @return the bpagadoDGT
	 */
	@Column(name = "B_PAGADO_DGT", nullable = false, precision = 1, scale = 0)
	public Integer getBpagadoDGT() {
		return bpagadoDGT;
	}

	/**
	 * @param bpagadoDGT
	 *            the bpagadoDGT to set
	 */
	public void setBpagadoDGT(Integer bpagadoDGT) {
		this.bpagadoDGT = bpagadoDGT;
	}

	/**
	 * @return the nmandamiento
	 */
	@Column(length = 20, name = "N_MANDAMIENTO", nullable = true)
	public String getNmandamiento() {
		return nmandamiento;
	}

	/**
	 * @param nmandamiento
	 *            the nmandamiento to set
	 */
	public void setNmandamiento(String nmandamiento) {
		this.nmandamiento = nmandamiento;
	}

	/**
	 * @return the fpDocumento
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FP_DOCUMENTO")
	public Date getFpDocumento() {
		return fpDocumento;
	}

	/**
	 * @param fpDocumento
	 *            the fpDocumento to set
	 */
	public void setFpDocumento(Date fpDocumento) {
		this.fpDocumento = fpDocumento;
	}

}
